/*
 * Project: Sudoku Explainer
 * Copyright (C) 2006-2007 Nicolas Juillerat
 * 
 * Project: Sudoku Hint Engine for Android
 * Copyright (C) 2010-2013 Emanuel Moecklin
 * 
 * Available under the terms of the Lesser General Public License (LGPL)
 */
package com.onegravity.sudoku.solver.core;

import java.io.Serializable;
import java.util.Collection;

import com.onegravity.sudoku.solver.data.Grid;

/**
 * Interface for indirect hints that are able to tell what
 * {@link com.onegravity.sudoku.solver.core.Potential Potential}s
 * have been set to off before this rule could be applied.
 * <p>
 * Used for chaining only. See package {@link com.onegravity.sudoku.solver.rules.chaining}.
 */
public interface HasParentPotentialHint extends Serializable {

    /**
     * Get the potentials that were removed from the initial grid
     * before this rule could be applied.
     * @param initialGrid the initial grid, on which this rule
     * cannot be applied.
     * @param currentGrid the currewnt grid, on which this rule
     * is revealed.
     * @return the potentials that were removed from the initial grid.
     */
    public Collection<Potential> getRuleParents(Grid initialGrid, Grid currentGrid);

}